Een eerste problematische tabel
Inleiding
Een quizvraag: wat hebben de games God of War, Doom en Tomb Raider met elkaar gemeen? Antwoord: het zijn allemaal remakes van oude games met dezelfde titel en dezelfde ontwikkelaar.
Als je een tabel van (oude en nieuwe) games aanmaakt, met als kolommen hun titel en ontwikkelaar, zou een stukje van de tabel er dus als volgt kunnen uitzien:
Titel | Ontwikkelaar |
---|---|
Doom | ID Software |
Doom | ID Software |
Tomb Raider | Crystal Dynamics |
Tomb Raider | Crystal Dynamics |
God of War | SCE Santa Monica |
God of War | SCE Santa Monica |
Voor SQL is er geen verschil tussen de oude en de nieuwe games, maar het gaat wel om twee verschillende zaken. Je zou het jaar van uitgave als kolom kunnen toevoegen om elke rij uit elkaar te houden. Of de spelconsole waarop het spel uitkwam. Of misschien is de uitgever steeds veranderd. Dan kan je elke rij uniek maken door die toe te voegen. Maar niets verhindert een ontwikkelaar om twee gelijknamige games meteen na elkaar uit te geven bij eenzelfde uitgever.
Het idee om elke rij uniek te maken is goed, maar je volgt best een voorzichtige aanpak. Dit kan door een speciale kolom aan de tabel toe te voegen, een primaire sleutel of primary key. Deze kolom bevat geen informatie over de rij in kwestie, maar dient alleen om een specifieke rij aan te duiden. Vaak is het gewoon een getal, zoals in dit voorbeeld, waarin de kolom Id
een primaire sleutel is:
Titel | Ontwikkelaar | Id |
---|---|---|
Doom | ID Software | 1 |
Doom | ID Software | 2 |
Tomb Raider | Crystal Dynamics | 3 |
Tomb Raider | Crystal Dynamics | 4 |
God of War | SCE Santa Monica | 5 |
God of War | SCE Santa Monica | 6 |
Je kan in SQL uitdrukken dat een bepaalde kolom wordt gebruikt als primaire sleutel, zodat je nooit per ongeluk twee rijen kan aanmaken met eenzelfde waarde in deze kolom.